﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Disk_Pizza_Admin
{
    public partial class frmMateriais : Form
    {
        public frmMateriais()
        {
            InitializeComponent();
        }
        
        OleDbConnection conexao;
        OleDbDataAdapter adapter;
        DataSet ds;
        OleDbCommand comando;
        int codigoMaterial = 0; 

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            if (CamposPreenchidos())
            {
                salvaProduto(codigoMaterial);
            }
        }

        private void salvaProduto(int codigo)
        {
            string sql = "";
            string material = txtNomeMaterial.Text;
            string qtdEstoque = txtQuantidade.Text;
            string qtdAlerta = txtQtdAlerta.Text;
            string data = DateTime.Now.ToString();
            if (codigo == 0)
            {
                sql = "INSERT INTO tblMaterial (material,qtdeestoque,qtdealerta,atualizacao) VALUES('"+material+"','"+qtdEstoque+"','"+qtdAlerta+"','"+data+"')";
            }
            else
            {        
                sql = "UPDATE  tblMaterial SET material = '"+material+"' ,qtdeestoque = '"+qtdEstoque+"', qtdealerta = '"+qtdAlerta+"', atualizacao = '"+data+"' WHERE CÓDIGO = "+codigo+"";
            }
            executaQuery(sql);
            limparCampos();
            MessageBox.Show("Dados salvos com sucesso!", "Dados Salvos", MessageBoxButtons.OK, MessageBoxIcon.Information);
            carregaGrid();


        }
        private void executaQuery(string consulta)
        {
            conexao = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\database.mdb");
            string sql = consulta;

            comando = new OleDbCommand();
            comando.Connection = conexao;
            comando.CommandText = sql;
            try
            {
                conexao.Open();
                comando.ExecuteNonQuery();
                ds.AcceptChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao fazer a operação! " + ex.Message.ToString());
            }
            finally
            {
                conexao.Close();
            }
        }

        private bool CamposPreenchidos()
        {
            if (txtNomeMaterial.Text.Trim().Equals(""))
            {
                errorProvider1.SetError(txtNomeMaterial, "O Nome do Material é de preenchimento obrigatório");
                return false;
            }
            else if (txtQuantidade.Text.Trim().Equals(""))
            {
                errorProvider1.SetError(txtQuantidade, "Informe a Quantidade em Estoque");
                return false;
            }
            else if (txtQtdAlerta.Text.Trim().Equals(""))
            {
                errorProvider1.SetError(txtQtdAlerta, "Informe a Quantidade de Alerta");
                return false;
            }
            else
            {
                return true;
            }
        }

        private void frmMateriais_Load(object sender, EventArgs e)
        {
            carregaGrid();
        }

        private void carregaGrid()
        {
            conexao = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\database.mdb");
            string sql = "";
            sql = sql + "    SELECT código, material , qtdeestoque AS 'Qtd em Estoque',qtdealerta As 'Qtd para Alertar', atualizacao as 'Ultima Reposição'";
            sql = sql + "    FROM            tblMaterial";
            sql = sql + "    WHERE 1=1 ";
            if (!(txtFiltroMaterial.Text.Trim().Equals("")))
            {
                sql = sql + "  AND (MATERIAL LIKE '%" + txtFiltroMaterial.Text + "%')";
            }

            sql = sql + "    ORDER BY material";

            adapter = new OleDbDataAdapter(sql, conexao);
            ds = new DataSet();
            adapter.Fill(ds, "tblMaterial");

            gridMaterial.DataSource = ds.Tables["tblMaterial"];
        }

        private void btnBuscarProduto_Click(object sender, EventArgs e)
        {
            carregaGrid();
        }

        private void btnNovoMaterial_Click(object sender, EventArgs e)
        {
            limparCampos();
            codigoMaterial = 0;
        }

        private void limparCampos()
        {
            txtNomeMaterial.Text = "";
            txtQtdAlerta.Text = "";
            txtQuantidade.Text = "";            
        }

        private void gridMaterial_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                string codigo_material = Convert.ToString(gridMaterial.Rows[e.RowIndex].Cells["CÓDIGO"].Value);

                if (!(codigo_material.Trim().Equals("")))
                {
                    preencheCamposMaterial(codigo_material);
                }
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }
        }

        private void preencheCamposMaterial(string oCodigo_material)
        {
            conexao = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ Application.StartupPath +@"\database.mdb");
            string sql = "";
            sql = sql + "    SELECT        * ";
            sql = sql + "    FROM            tblMaterial";
            sql = sql + "    WHERE CÓDIGO = " + Convert.ToInt32(oCodigo_material) + "";

            adapter = new OleDbDataAdapter(sql, conexao);
            ds = new DataSet();
            adapter.Fill(ds, "tblCliente");
            this.txtNomeMaterial.Text = Convert.ToString(ds.Tables["tblCliente"].Rows[0]["material"]);
            this.txtQuantidade.Text = Convert.ToString(ds.Tables["tblCliente"].Rows[0]["qtdeestoque"]);
            this.txtQtdAlerta.Text = Convert.ToString(ds.Tables["tblCliente"].Rows[0]["qtdeAlerta"]);

            codigoMaterial = Convert.ToInt32(oCodigo_material);
            
        }

    }
}
